package br.com.aeso.bancoCurriculo.model.comum.negocio;

import br.com.aeso.bancoCurriculo.model.comum.excecoes.ConcorrenciaException;
import br.com.aeso.bancoCurriculo.model.comum.excecoes.NegocioException;

/**
 * @author Giulliano Ferreira
 * 
 */
public interface Service {

    EntidadeNegocio criar();

    Class<?> getClasseEntidade();

    EntidadeNegocio obter(long chavePrimaria) throws NegocioException;

    EntidadeNegocio obter(long chavePrimaria, Class<?> classe) throws NegocioException;

    long inserir(EntidadeNegocio entidadeNegocio) throws NegocioException;

    void atualizar(EntidadeNegocio entidadeNegocio) throws ConcorrenciaException, NegocioException;

    void atualizar(EntidadeNegocio entidadeNegocio, Class<?> classe) throws ConcorrenciaException, NegocioException;

    void remover(EntidadeNegocio entidadeNegocio) throws NegocioException;


}